import YTable from '../components/y-table.vue'
import clip from '../utils/tools/Clipboard'
import debounce from "@/utils/tools/Debounce";

export default {
    components: {YTable},
    data() {
        return {
            // 多选框选择后保存数据
            selectionArr: [],
            // 搜索框数据
            search: '',
            // 表单数据
            form: {},
            // 表格数据
            tableData: [],
            // 当前页码
            currentPage: 1,
            // 每页展示数量的默认值
            pageSize: 10,
            // 每页展示数量的备选列表，最大值100
            page_sizes: [10, 25, 50, 100],
            // 组件布局，子组件名用逗号分隔
            layout: 'total, sizes, prev, pager, next, jumper',
            // 总条数
            total: 0,
            // table 的 loading
            loading: false,
            // 表格高度
            height: window.innerHeight - 180,
            // 防抖后的 handleResize 函数
            debouncedHandleResize: debounce(() => {
                this.height = window.innerHeight - 180
            }),
        }
    },
    mounted() {
        // 监听窗口大小变化
        window.addEventListener('resize', this.debouncedHandleResize);
    },
    beforeDestroy() {
        // 移除窗口大小监听
        window.removeEventListener('resize', this.debouncedHandleResize);
    },
    methods: {
        /**
         * ## 一键复制
         * @param {string} text 复制文本
         * @param $event 元素
         */
        copy(text, $event) {
            clip(text, $event)
        },
        /**
         * ## 页码变化
         * @param {number} val 当前页码
         */
        currentChange(val) {
            this.currentPage = val
        },
        /**
         * ## 分页大小变化
         * @param {number} val 当前分页大小
         */
        sizeChange(val) {
            this.currentPage = 1
            this.pageSize = val
        },
    },
}
